package controller

import (
//	"appengine"
	//	"appengine/urlfetch"
	//	"bytes"
	//	"encoding/json"
	//	"entity"
	//	"fmt"
	//	"github.com/PuerkitoBio/goquery"
	//	"helper"
	//	"html/template"
	//	"io/ioutil"
	//	"model"
	"net/http"
)

func DomainInfor(w http.ResponseWriter, r *http.Request) {
	
	//	w.Header().Set("Content-Type", "text/html; charset=utf-8")
	//	/*
	//		1. Validate domain from uri.
	//		2. Check if domain is exist. If not 3
	//		3. Get basic domain information by request to domain
	//		4. Get complex domain information from another site : IPAddress, Whois...
	//	*/
	//
	//	//1. Validate domain from URL.
	//	c := appengine.NewContext(r)
	//	c.Infof(r.URL.Path)
	//	valid, domainName := helper.URLToDomain("/www", r.URL.Path)
	//
	//	if valid {
	//		var domain entity.Domain
	//		domain.Domain = domainName
	//		//Check memcache
	//
	//		//Check exist domain
	//		if model.CheckExist(domain.Domain) {
	//			//Check domain status, if domain in blacklist
	//			fmt.Fprint(w, "This domain is exist !")
	//		} else {
	//			//Get domain simple information, request to domain
	//
	//			client := urlfetch.Client(c)
	//
	//			domainResponse, err := client.Get("http://" + domain.Domain)
	//			if err != nil {
	//				http.Error(w, err.Error(), http.StatusInternalServerError)
	//				return
	//			}
	//			body, err := ioutil.ReadAll(domainResponse.Body)
	//			if err != nil {
	//				http.Error(w, err.Error(), http.StatusInternalServerError)
	//				return
	//			}
	//			domainResponse.Body.Close()
	//
	//			b := bytes.NewReader([]byte(body))
	//			parsedDocument, _ := goquery.NewDocumentFromReader(b)
	//
	//			//get response header
	//			dec, err := json.Marshal(domainResponse.Header)
	//			if err != nil {
	//				domain.Header = ""
	//			} else {
	//				domain.Header = string(dec)
	//			}
	//
	//			//get title, keyword, description
	//			orHeader := domainResponse.Header
	//			title := parsedDocument.Find("title").Text()
	//			keyword, _ := parsedDocument.Find("meta[name=keywords]").Attr("content")
	//			description, _ := parsedDocument.Find("meta[name=description]").Attr("content")
	//			domain.Title = title
	//			domain.Keywords = keyword
	//			domain.Description = description
	//
	//			//get Server
	//			server := domainResponse.Header.Get("Server")
	//			domain.WebServer = server
	//
	//			//get html size
	//			content,_ := parsedDocument.Html()
	//			contentByteArray := []byte(content)
	//			size := float64(len(contentByteArray)/1024)
	//
	//			//get analytic
	//
	//			//get adsense
	//
	//			//get js library
	//
	//			//get heading
	//
	//			//get image
	//
	//			//get outlink
	//
	//			//get content
	//
	//			err = model.AddDomain(c, domain)
	//			if err != nil {
	//				http.Error(w, err.Error(), http.StatusInternalServerError)
	//				return
	//			}
	//
	//			text := parsedDocument.Text()
	//			text = ""
	//			c.Infof(text)
	//			fmt.Fprint(w, "@ True Response : ", orHeader)
	//			fmt.Fprint(w, "\n")
	//			fmt.Fprint(w, "-----------------------------------------")
	//			fmt.Fprint(w, "\n")
	//			fmt.Fprint(w, "@ Header after mix : ", domain.Header)
	//			fmt.Fprint(w, "\n")
	//			fmt.Fprint(w, "-----------------------------------------")
	//			fmt.Fprint(w, "\n")
	//
	//			fmt.Fprint(w, "\n")
	//			fmt.Fprint(w, "-----------------------------------------")
	//			fmt.Fprint(w, "\n")
	//			fmt.Fprint(w, "@ WebServer : "+domain.WebServer+"\n")
	//			fmt.Fprint(w, "@ Title : "+domain.Title+" \n")
	//			fmt.Fprint(w, "@ Keyword : "+domain.Keywords+"\n")
	//			fmt.Fprint(w, "@ Description : "+domain.Description+" \n")
	//			fmt.Fprint(w, "@ Content size : ", size)
	//
	//			//Add function to view
	////			funcMap := template.FuncMap{
	////				"GetYear":      funcMap.GetYear,
	////				"GetMonth":     funcMap.GetMonth,
	////			}
	////
	////			//Add data to template
	////			data := map[string]interface{}{
	////				"tag":             tag,
	////				"listNews":        listNews,
	////			}
	////
	////			//Build template
	////			t := template.Must(template.New("Domain").Funcs(funcMap).Parse(currentTemplate.Tag))
	////			err = t.Execute(w, data)
	////			if err != nil {
	////				http.Error(w, err.Error(), http.StatusInternalServerError)
	////			}
	//		}
	//	} else {
	//		fmt.Fprint(w, "Invalid domain name, Please try again !")
	//	}
}
